<rd-header>
  <rd-header-title title="Cluster overview">
    <a data-toggle="tooltip" title="Refresh" ui-sref="swarm" ui-sref-opts="{reload: true}">
      <i class="fa fa-refresh" aria-hidden="true"></i>
    </a>
    <i id="loadingViewSpinner" class="fa fa-cog fa-spin" style="margin-left: 5px;"></i>
  </rd-header-title>
  <rd-header-content>Swarm</rd-header-content>
</rd-header>

<div class="row">
  <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
    <rd-widget>
      <rd-widget-header icon="fa-object-group" title="Cluster status"></rd-widget-header>
      <rd-widget-body classes="no-padding">
        <table class="table">
          <tbody>
            <tr>
              <td>Nodes</td>
              <td ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">{{ swarm.Nodes }}</td>
              <td ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'">{{ info.Swarm.Nodes }}</td>
            </tr>
            <tr ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">
              <td>Images</td>
              <td>{{ info.Images }}</td>
            </tr>
            <tr ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">
              <td>Swarm version</td>
              <td>{{ docker.Version|swarmversion }}</td>
            </tr>
            <tr>
              <td>Docker API version</td>
              <td>{{ docker.ApiVersion }}</td>
            </tr>
            <tr ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">
              <td>Strategy</td>
              <td>{{ swarm.Strategy }}</td>
            </tr>
            <tr>
              <td>Total CPU</td>
              <td ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">{{ info.NCPU }}</td>
              <td ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'">{{ totalCPU }}</td>
            </tr>
            <tr>
              <td>Total memory</td>
              <td ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">{{ info.MemTotal|humansize: 2 }}</td>
              <td ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'">{{ totalMemory|humansize: 2 }}</td>
            </tr>
            <tr ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">
              <td>Operating system</td>
              <td>{{ info.OperatingSystem }}</td>
            </tr>
            <tr ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">
              <td>Kernel version</td>
              <td>{{ info.KernelVersion }}</td>
            </tr>
            <tr ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">
              <td>Go version</td>
              <td>{{ docker.GoVersion }}</td>
            </tr>
          </tbody>
        </table>
      </rd-widget-body>
    </rd-widget>
  </div>
</div>

<div class="row">
  <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM'">
    <rd-widget>
      <rd-widget-header icon="fa-hdd-o" title="Node status">
        <div class="pull-right">
          Items per page:
          <select ng-model="state.pagination_count" ng-change="changePaginationCount()">
            <option value="0">All</option>
            <option value="10">10</option>
            <option value="25">25</option>
            <option value="50">50</option>
            <option value="100">100</option>
          </select>
        </div>
      </rd-widget-header>
      <rd-widget-body classes="no-padding">
        <table class="table table-striped">
          <thead>
            <tr>
              <th>
                <a ui-sref="swarm" ng-click="order('name')">
                  Name
                  <span ng-show="sortType == 'name' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'name' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('cpu')">
                  CPU
                  <span ng-show="sortType == 'cpu' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'cpu' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('memory')">
                  Memory
                  <span ng-show="sortType == 'memory' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'memory' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('ip')">
                  IP
                  <span ng-show="sortType == 'ip' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'ip' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('version')">
                  Engine
                  <span ng-show="sortType == 'version' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'version' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('status')">
                  Status
                  <span ng-show="sortType == 'status' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'status' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr dir-paginate="node in (state.filteredNodes = (swarm.Status | filter:state.filter | orderBy:sortType:sortReverse | itemsPerPage: state.pagination_count))">
              <td>{{ node.name }}</td>
              <td>{{ node.cpu }}</td>
              <td>{{ node.memory }}</td>
              <td>{{ node.ip }}</td>
              <td>{{ node.version }}</td>
              <td><span class="label label-{{ node.status|nodestatusbadge }}">{{ node.status }}</span></td>
            </tr>
          </tbody>
        </table>
        <div class="pagination-controls">
          <dir-pagination-controls></dir-pagination-controls>
        </div>
      </rd-widget-body>
    </rd-widget>
  </div>
  <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" ng-if="applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'">
    <rd-widget>
      <rd-widget-header icon="fa-hdd-o" title="Node status">
        <div class="pull-right">
          Items per page:
          <select ng-model="state.pagination_count" ng-change="changePaginationCount()">
            <option value="0">All</option>
            <option value="10">10</option>
            <option value="25">25</option>
            <option value="50">50</option>
            <option value="100">100</option>
          </select>
        </div>
      </rd-widget-header>
      <rd-widget-body classes="no-padding">
        <table class="table table-striped">
          <thead>
            <tr>
              <th>
                <a ui-sref="swarm" ng-click="order('Hostname')">
                  Name
                  <span ng-show="sortType == 'Hostname' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'Hostname' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('Role')">
                  Role
                  <span ng-show="sortType == 'Role' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'Role' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('CPUs')">
                  CPU
                  <span ng-show="sortType == 'CPUs' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'CPUs' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('Memory')">
                  Memory
                  <span ng-show="sortType == 'Memory' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'Memory' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('EngineVersion')">
                  Engine
                  <span ng-show="sortType == 'EngineVersion' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'EngineVersion' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th ng-if="applicationState.endpoint.apiVersion >= 1.25">
                <a ui-sref="swarm" ng-click="order('Addr')">
                  IP Address
                  <span ng-show="sortType == 'Addr' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'Addr' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
              <th>
                <a ui-sref="swarm" ng-click="order('Status')">
                  Status
                  <span ng-show="sortType == 'Status' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
                  <span ng-show="sortType == 'Status' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
                </a>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr dir-paginate="node in (state.filteredNodes = (nodes | filter:state.filter | orderBy:sortType:sortReverse | itemsPerPage: state.pagination_count))">
              <td><a ui-sref="node({id: node.Id})">{{ node.Hostname }}</a></td>
              <td>{{ node.Role }}</td>
              <td>{{ node.CPUs / 1000000000 }}</td>
              <td>{{ node.Memory|humansize }}</td>
              <td>{{ node.EngineVersion }}</td>
              <td ng-if="applicationState.endpoint.apiVersion >= 1.25">{{ node.Addr }}</td>
              <td><span class="label label-{{ node.Status|nodestatusbadge }}">{{ node.Status }}</span></td>
            </tr>
          </tbody>
        </table>
        <div class="pagination-controls">
          <dir-pagination-controls></dir-pagination-controls>
        </div>
      </rd-widget-body>
    </rd-widget>
  </div>
</div>
